using System;
using System.Data;
using System.Configuration;
using System.Collections.Generic;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

/// <summary>
/// Summary description for PerfilesCtrl
/// </summary>
public class PerfilesCtrl
{
    private PerfilesBD bdPerfiles;
    private static PerfilesEnt entPerfil;
    private AtributosCtrl atributos;
    

	public PerfilesCtrl()
	{
        bdPerfiles = new PerfilesBD();
        this.atributos = new AtributosCtrl();
	}
    //Obtiene y retorna un dataTable con los nombres de los perfiles existentes
    public DataTable ActualizarGrid()
    {
        return this.bdPerfiles.ConsultarPerfiles();
    }
    //Recibe el nombre de un perfil y consulta el perfil con ese nombre almacenando los datos
    //en un objeto entidad y retorna ese objeto con la informacion del perfil consultado
    public PerfilesEnt ConsultarPerfil(string nombre)
    {
        entPerfil = this.bdPerfiles.ConsultarPerfil(nombre);
        return entPerfil;
    }
    //Encapsula los datos del nuevo perfil( nombre, descripcion y la lista de permisos para ese perfil ) creando un nuevo objeto 
    //entidad de perfil y envia el objeto como parametro al metodo InsertarPerfil de la controladora
    //de base de datos. Retorna true si se realizo la insercion con exito y false en caso contrario
    public bool InsertarPerfil(string nombre, string descripcion, List<PermisosEnt> permisos)
    {
        PerfilesEnt perfil = new PerfilesEnt(nombre,descripcion,permisos);
        return this.bdPerfiles.InsertarPerfil(perfil);
    }
    //Se llama al metodo eliminar de la controladora base de datos enviado como parametro
    //el nombre del ultimo perfil consultado.Retorna true si se realizo la eliminacion con exito 
    //y false en caso contrario
    public bool EliminarPerfil()
    {
        return this.bdPerfiles.EliminarPerfil(entPerfil.Nombre);
    }
    //Encapsula los datos recibidos por parametro junto con el nombre del ultimo perfil
    //consultado y envia el objeto creado como parametro al metodo ActuliazarPerfil de 
    //controladora de base de datos. Retorna true si se realizo la modificacion con exito 
    //y false en caso contrario
    public bool ActualizarPerfil(string nombreViejo, string nombre, string descripcion, List<PermisosEnt> permisos)
    {
        PerfilesEnt perfil = new PerfilesEnt(nombre, descripcion, permisos);
        return this.bdPerfiles.ActualizarPerfil(nombreViejo, perfil);
    }

    //Retorna todos los atributos de modulo
    public AtributosCtrl SolicitarEstadoAtributos()
    {
        return this.atributos;
    }
    //Realiza la accion correspondiente al estado en el que se encuentra
    //segun el primer parametro, si es true modifica de lo contario inserta.
    //Retorna true si la operacion realizada fue exitosa y false en caso contrario
    public bool AccionesAceptar(bool modificando, string nombreViejo, string nombre, string descripcion, List<PermisosEnt> permisos)
    {
        bool resultado;

        if (modificando)
        {
            resultado = this.ActualizarPerfil(nombreViejo, nombre, descripcion, permisos);
        }
        else
        {
            resultado = this.InsertarPerfil(nombre, descripcion, permisos);
        }

        return resultado;
    }


}
